package org.framework.edge.builder.application;

import org.framework.edge.builder.application.command.docker.repository.DockerRepositoryBackupsCommand;
import org.framework.edge.builder.domain.model.docker.repository.DockerRepository;
import org.wu.framework.web.response.Result;
import org.wu.framework.web.response.ResultFactory;
import org.framework.edge.builder.domain.model.docker.repository.backup.DockerRepositoryBackup;
import org.framework.edge.builder.application.command.docker.repository.backup.DockerRepositoryBackupRemoveCommand;
import org.framework.edge.builder.application.command.docker.repository.backup.DockerRepositoryBackupStoryCommand;
import org.framework.edge.builder.application.command.docker.repository.backup.DockerRepositoryBackupUpdateCommand;
import org.framework.edge.builder.application.command.docker.repository.backup.DockerRepositoryBackupQueryListCommand;
import org.framework.edge.builder.application.command.docker.repository.backup.DockerRepositoryBackupQueryOneCommand;
import org.framework.edge.builder.application.dto.DockerRepositoryBackupDTO;
import java.util.List;
import org.wu.framework.lazy.orm.database.lambda.domain.LazyPage;
import org.framework.edge.builder.application.command.docker.repository.backup.DockerRepositoryBackupExcelExport;
import org.framework.edge.builder.application.command.docker.repository.backup.DockerRepositoryBackupExcelImport;
/**
 * describe Docker仓库备份 
 *
 * @author Jia wei Wu
 * @date 2025/07/10 08:18 晚上
 * @see org.wu.framework.lazy.orm.core.persistence.reverse.lazy.ddd.DefaultDDDLazyApplication 
 **/

public interface DockerRepositoryBackupApplication {


    /**
     * describe 新增Docker仓库备份
     *
     * @param dockerRepositoryBackupStoryCommand 新增Docker仓库备份     
     * @return {@link Result<DockerRepositoryBackup>} Docker仓库备份新增后领域对象     
     
     * @author Jia wei Wu
     * @date 2025/07/10 08:18 晚上
     **/

    Result<DockerRepositoryBackup> story(DockerRepositoryBackupStoryCommand dockerRepositoryBackupStoryCommand);

    /**
     * describe 批量新增Docker仓库备份
     *
     * @param dockerRepositoryBackupStoryCommandList 批量新增Docker仓库备份     
     * @return {@link Result<List<DockerRepositoryBackup>>} Docker仓库备份新增后领域对象集合     
     
     * @author Jia wei Wu
     * @date 2025/07/10 08:18 晚上
     **/

    Result<List<DockerRepositoryBackup>> batchStory(List<DockerRepositoryBackupStoryCommand> dockerRepositoryBackupStoryCommandList);

    /**
     * describe 更新Docker仓库备份
     *
     * @param dockerRepositoryBackupUpdateCommand 更新Docker仓库备份     
     * @return {@link Result<DockerRepositoryBackup>} Docker仓库备份领域对象     
     
     * @author Jia wei Wu
     * @date 2025/07/10 08:18 晚上
     **/

    Result<DockerRepositoryBackup> updateOne(DockerRepositoryBackupUpdateCommand dockerRepositoryBackupUpdateCommand);

    /**
     * describe 查询单个Docker仓库备份
     *
     * @param dockerRepositoryBackupQueryOneCommand 查询单个Docker仓库备份     
     * @return {@link Result<DockerRepositoryBackupDTO>} Docker仓库备份DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/07/10 08:18 晚上
     **/

    Result<DockerRepositoryBackupDTO> findOne(DockerRepositoryBackupQueryOneCommand dockerRepositoryBackupQueryOneCommand);

    /**
     * describe 查询多个Docker仓库备份
     *
     * @param dockerRepositoryBackupQueryListCommand 查询多个Docker仓库备份     
     * @return {@link Result <List<DockerRepositoryBackupDTO>>} Docker仓库备份DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/07/10 08:18 晚上
     **/

    Result <List<DockerRepositoryBackupDTO>> findList(DockerRepositoryBackupQueryListCommand dockerRepositoryBackupQueryListCommand);

    /**
     * describe 分页查询多个Docker仓库备份
     *
     * @param dockerRepositoryBackupQueryListCommand 分页查询多个Docker仓库备份     
     * @return {@link Result <LazyPage<DockerRepositoryBackupDTO>>} 分页Docker仓库备份DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/07/10 08:18 晚上
     **/

    Result <LazyPage<DockerRepositoryBackupDTO>> findPage(int size,int current,DockerRepositoryBackupQueryListCommand dockerRepositoryBackupQueryListCommand);

    /**
     * describe 删除Docker仓库备份
     *
     * @param dockerRepositoryBackupRemoveCommand 删除Docker仓库备份     
     * @return {@link Result<DockerRepositoryBackup>} Docker仓库备份     
     
     * @author Jia wei Wu
     * @date 2025/07/10 08:18 晚上
     **/

    Result<DockerRepositoryBackup> remove(DockerRepositoryBackupRemoveCommand dockerRepositoryBackupRemoveCommand);

    /**
     * describe 导出Docker仓库备份
     *
     * @param dockerRepositoryBackupQueryListCommand 导出Docker仓库备份     
     * @return {@link List<DockerRepositoryBackupExcelExport>} Docker仓库备份     
     
     * @author Jia wei Wu
     * @date 2025/07/10 08:18 晚上
     **/

    public List<DockerRepositoryBackupExcelExport> exportExcel(DockerRepositoryBackupQueryListCommand dockerRepositoryBackupQueryListCommand);

    /**
     * describe 导入Docker仓库备份
     *
     * @param dockerRepositoryBackupExcelImportList 导入Docker仓库备份     
     * @return {@link Result<List<DockerRepositoryBackupExcelImport>>} Docker仓库备份     
     
     * @author Jia wei Wu
     * @date 2025/07/10 08:18 晚上
     **/

    public Result<List<DockerRepositoryBackupExcelImport>> importExcel(List<DockerRepositoryBackupExcelImport> dockerRepositoryBackupExcelImportList);

    /**
     * 仓库备份
     * @param dockerRepositoryBackupsCommand 备份信息
     * @return
     */
    Result<DockerRepository> backups(DockerRepositoryBackupsCommand dockerRepositoryBackupsCommand);

}